#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
#endregion

namespace KLib.Particles
{
    public struct EmitterSettings
    {
        #region Fields
        private float particleLife;
        private float emitterLife;
        private Color color;
        private float minSize;
        private float maxSize;
        private int minParticles;
        private int maxParticles;
        #endregion

        #region Initialization
        public EmitterSettings(float particleLife, Color color,  float size, int particleCount)
        {
            this = new EmitterSettings(particleLife, 0, color, size, size, particleCount, particleCount);
        }

        public EmitterSettings(float particleLife, float emitterLife, Color color, float minSize, float maxSize, int minParticles, int maxParticles)
        {
            this.particleLife = particleLife;
            this.emitterLife = emitterLife;
            this.color = color;
            this.minSize = minSize;
            this.maxSize = maxSize;
            this.minParticles = minParticles;
            this.maxParticles = maxParticles;
        }
        #endregion

        #region Properties
        /// <summary>
        /// The ammount of time (in seconds) that a particle will be alive for. If 0, assume infinite
        /// </summary>
        public float ParticleLife
        {
            get { return particleLife; }
        }

        /// <summary>
        /// The ammount of time (in seconds) that the emmiter will be alive for. If 0, assume infinte
        /// </summary>
        public float EmitterLife
        {
            get { return emitterLife; }
        }

        /// <summary>
        /// The Color of the particles being emitted, if TransparentBlack, assume random
        /// </summary>
        public Color Color
        {
            get { return color; }
        }

        /// <summary>
        /// The minimum size of a particle
        /// </summary>
        public float MinSize
        {
            get { return minSize; }
        }

        /// <summary>
        /// The Maximum size of a particle
        /// </summary>
        public float MaxSize
        {
            get { return maxSize; }
        }

        /// <summary>
        /// The minimum ammount of particles active at any time
        /// </summary>
        public int MinParticles
        {
            get { return minParticles; }
        }

        /// <summary>
        /// The maximum number of particles an emitter has active at any given time
        /// </summary>
        public int MaxParticles
        {
            get { return maxParticles; }
        }
        #endregion

    }
}
